package com.jinunn.system.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jinunn.system.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jinunn.system.model.dto.UserAuthInfoDto;
import com.jinunn.system.model.vo.user.UserDetailVo;
import com.jinunn.system.model.vo.user.UserPageQuery;
import com.jinunn.system.model.vo.user.UserPageVO;
import com.jinunn.system.plugin.mybatis.annotation.DataPermission;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 用户信息表 Mapper 接口
 * </p>
 *
 * @author JIN
 * @since 2024-07-10
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

    /**
     * 根据用户名获取认证信息，属于什么角色
     *
     * @param username 用户名称
     * @return {@link UserAuthInfoDto}
     */
    UserAuthInfoDto getUserAuthInfo(@Param("username") String username);

    /**
     * 获取用户表单详情
     *
     * @param userId 用户ID
     * @return UserDetailVo
     */
    UserDetailVo getUserDetail(Long userId);

    /**
     * 获取用户分页列表
     *
     * @param page 分页信息
     * @param queryParams 查询信息
     * @return 分页
     */
    @DataPermission(deptAlias = "t1")
    IPage<UserPageVO> getPage(Page<UserPageVO> page, UserPageQuery queryParams);
}
